package gob.cgr.web.sgrh.managed;

import gob.cgr.sgrh.ejb.entidad.AdmGrado;
import gob.cgr.sgrh.ejb.entidad.Cargo;
import gob.cgr.sgrh.ejb.entidad.CondicionEstudio;
import gob.cgr.sgrh.ejb.entidad.Documento;
import gob.cgr.sgrh.ejb.entidad.Maestra;
import gob.cgr.sgrh.ejb.entidad.Puesto;
import gob.cgr.sgrh.ejb.entidad.UnidadOrganica;
import gob.cgr.web.sgrh.service.SigerhService;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.TimeZone;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.model.SelectItem;
import javax.inject.Inject;

@ViewScoped
@ManagedBean
public class ParametroMB {

	@Inject
	private SigerhService service;
	private String rangoFechaNac;
	private List<SelectItem> estadoPersonal;
	private List<SelectItem> tiposParentezco;
	private List<SelectItem> gradosAcademicos;
	private List<SelectItem> condicionEstudios;
	private List<SelectItem> requisitos;
	private List<Documento> tiposSolicitudes;
	private List<Cargo> cargosLista;
	private List<UnidadOrganica> unidadesOrganicasLista;
	private TimeZone timeZone=TimeZone.getTimeZone("America/Lima");
	
	public ParametroMB() {
		// TODO Auto-generated constructor stub
		
	}

	@PostConstruct
	public void inicio(){
		if(tiposParentezco==null){
			List<Maestra>tiposPar=service.listarTiposParentezco();
			tiposParentezco=new ArrayList<SelectItem>();
			for(Maestra m:tiposPar){
				SelectItem item=new SelectItem(m.getValor(),m.getDescripcion());
				tiposParentezco.add(item);
					
				
			}
			
		}
		
		if(tiposSolicitudes==null || tiposSolicitudes.size()==0){
			tiposSolicitudes=service.listarDocumentosDeSolicitud();
			
		}
		
		if(cargosLista==null){
			cargosLista=service.listarCargos();
			
		}
		if(unidadesOrganicasLista==null){
			unidadesOrganicasLista=service.listarUnidadesOrganicas();
		}
		
		/*Estados*/
		String estados[] = { "ACTIVO", "CESADO", "SUSPENDIDO" };

		SelectItem s = new SelectItem("", " Seleccione ");
		if (estadoPersonal == null) {
			estadoPersonal = new ArrayList<SelectItem>();
			estadoPersonal.add(s);
			for (String o : estados) {
				SelectItem it = new SelectItem(o, o);
				estadoPersonal.add(it);
			}
		}
		
		/*Fin estados*/
		
			
	}
	public String getRangoFechaNac() {
		StringBuilder sb = new StringBuilder("1900:");
		sb.append(Calendar.getInstance().get(Calendar.YEAR));
		rangoFechaNac = sb.toString();
	//	System.out.println(rangoFechaNac);
		return rangoFechaNac;
	}

	public void setRangoFechaNac(String rangoFechaNac) {
		this.rangoFechaNac = rangoFechaNac;
	}

	public List<SelectItem> getEstadoPersonal() {
	
		return estadoPersonal;
	}

	public void setEstadoPersonal(List<SelectItem> estadoPersonal) {
		this.estadoPersonal = estadoPersonal;
	}

	public List<SelectItem> getTiposParentezco() {
		return tiposParentezco;
	}

	public void setTiposParentezco(List<SelectItem> tiposParentezco) {
		this.tiposParentezco = tiposParentezco;
	}

	public List<SelectItem> getGradosAcademicos() {
		checkAdmGrados();
		return gradosAcademicos;
	}

	public void setGradosAcademicos(List<SelectItem> gradosAcademicos) {
		this.gradosAcademicos = gradosAcademicos;
	}

	public List<SelectItem> getCondicionEstudios() {
		checkCondicionesEstudios();
		return condicionEstudios;
	}

	public void setCondicionEstudios(List<SelectItem> condicionEstudios) {
		this.condicionEstudios = condicionEstudios;
	}

	private void checkCondicionesEstudios(){
		System.out.println("checkCondicion");
		if(condicionEstudios==null || condicionEstudios.size()==0){
			condicionEstudios=new ArrayList<SelectItem>();
			List<CondicionEstudio> condicionesEstudios=service.listarCondicionEstudios();
			
			for(CondicionEstudio c:condicionesEstudios){
				SelectItem i=new SelectItem(c.getIdCondEstudio(),c.getDenominacion());
				condicionEstudios.add(i);
			}
			
		}
	}
	private void checkAdmGrados(){
		System.out.println("checkGrados");
		if(gradosAcademicos==null || gradosAcademicos.size()==0){
			gradosAcademicos=new ArrayList<SelectItem>();
			List<AdmGrado> grados=service.listarGradosAcademicos();
			
			for(AdmGrado c:grados){
				SelectItem i=new SelectItem(c.getIdAdmGrado(),c.getDenominacion());
				gradosAcademicos.add(i);
			}
			
			
			
		}
	}

	public List<SelectItem> getRequisitos() {
		return requisitos;
	}

	public void setRequisitos(List<SelectItem> requisitos) {
		this.requisitos = requisitos;
	}

	public List<Documento> getTiposSolicitudes() {
		
		return tiposSolicitudes;
	}

	public void setTiposSolicitudes(List<Documento> tiposSolcitudes) {
		this.tiposSolicitudes = tiposSolcitudes;
	}

	public List<Cargo> getCargosLista() {
		return cargosLista;
	}

	public void setCargosLista(List<Cargo> cargosLista) {
		this.cargosLista = cargosLista;
	}

	public List<UnidadOrganica> getUnidadesOrganicasLista() {
		return unidadesOrganicasLista;
	}

	public void setUnidadesOrganicasLista(List<UnidadOrganica> unidadesOrganicasLista) {
		this.unidadesOrganicasLista = unidadesOrganicasLista;
	}

	public TimeZone getTimeZone() {
		return timeZone;
	}

	public void setTimeZone(TimeZone timeZone) {
		this.timeZone = timeZone;
	}
	
}
